project(sqlitebrowser)
cmake_minimum_required(VERSION 2.8.12.2)

# BUILD_VERSION is the current date in YYYYMMDD format. It is only
# used by the nightly version to add the date of the build.
string(TIMESTAMP BUILD_VERSION "%Y%m%d")

# Choose between building a stable version or nightly (the default), depending
# on whether '-DBUILD_STABLE_VERSION=1' is passed on the command line or not.
option(BUILD_STABLE_VERSION "Don't build the stable version by default" OFF)
if(NOT BUILD_STABLE_VERSION)
    add_definitions(-DBUILD_VERSION=${BUILD_VERSION})
endif()

set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")

OPTION(ENABLE_TESTING "Enable the unit tests" OFF)
OPTION(FORCE_INTERNAL_QSCINTILLA "Don't use the distribution's QScintilla library even if there is one" OFF)
OPTION(FORCE_INTERNAL_QCUSTOMPLOT "Don't use distribution's QCustomPlot even if available" ON)
OPTION(FORCE_INTERNAL_QHEXEDIT "Don't use distribution's QHexEdit even if available" ON)
OPTION(ALL_WARNINGS "Enable some useful warning flags" OFF)

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE "Release")
endif()

add_definitions(-std=c++11)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# Fix behavior of CMAKE_CXX_STANDARD when targeting macOS.
if (POLICY CMP0025)
    cmake_policy(SET CMP0025 NEW)
endif ()
# Fix warning of AUTOMOC behavior
if (POLICY CMP0071)
    # Use of AUTOMOC is set to old for now for consistency.
    # Affects of 'new' behavior is as yet to be determined.
    # https://cmake.org/cmake/help/latest/policy/CMP0071.html
    cmake_policy(SET CMP0071 OLD)
endif()

if(WIN32 AND MSVC)
	if(CMAKE_CL_64)
		# Paths for 64-bit windows builds
		set(OPENSSL_PATH "C:/dev/OpenSSL-Win64" CACHE PATH "OpenSSL Path")
		set(QT5_PATH "C:/dev/Qt/5.12.8/5.12.8/msvc2017_64" CACHE PATH "Qt5 Path")

                # Choose between SQLCipher or SQLite, depending whether
                # -Dsqlcipher=1 is passed on the command line
                if(sqlcipher)
                        set(SQLITE3_PATH "C:/git_repos/SQLCipher-Win64" CACHE PATH "SQLCipher Path")
                else()
                        set(SQLITE3_PATH "C:/dev/SQLite-Win64" CACHE PATH "SQLite Path")
                endif()
	else()
		# Paths for 32-bit windows builds
		set(OPENSSL_PATH "C:/dev/OpenSSL-Win32" CACHE PATH "OpenSSL Path")
		set(QT5_PATH "C:/dev/Qt/5.12.8/5.12.8/msvc2017" CACHE PATH "Qt5 Path")

                # Choose between SQLCipher or SQLite, depending whether
                # -Dsqlcipher=1 is passed on the command line
                if(sqlcipher)
                        set(SQLITE3_PATH "C:/git_repos/SQLCipher-Win32" CACHE PATH "SQLCipher Path")
                else()
                        set(SQLITE3_PATH "C:/dev/SQLite-Win32" CACHE PATH "SQLite Path")
                endif()
	endif()
	set(CMAKE_PREFIX_PATH "${QT5_PATH};${SQLITE3_PATH}")
endif()

find_package(Qt5 REQUIRED COMPONENTS Concurrent Gui LinguistTools Network PrintSupport Test Widgets Xml)

if(NOT FORCE_INTERNAL_QSCINTILLA)
    find_package(QScintilla 2.8.10 QUIET)
endif()
if(FORCE_INTERNAL_QCUSTOMPLOT)
    set(QCustomPlot_FOUND FALSE)
else()
    find_package(QCustomPlot)
endif()
if(FORCE_INTERNAL_QHEXEDIT)
    set(QHexEdit_FOUND FALSE)
else()
    find_package(QHexEdit)
endif()
set(JSON_DIR libs/json)

if(NOT QSCINTILLA_FOUND)
    set(QSCINTILLA_DIR libs/qscintilla/Qt4Qt5)
    add_subdirectory(${QSCINTILLA_DIR})
endif()
if(NOT QHexEdit_FOUND)
    set(QHexEdit_DIR libs/qhexedit)
    set(QHexEdit_INCL_DIR ${QHexEdit_DIR}/src)
    add_subdirectory(${QHexEdit_DIR})
endif()
add_subdirectory(${JSON_DIR})
if(NOT QCustomPlot_FOUND)
    set(QCustomPlot_DIR libs/qcustomplot-source)
    add_subdirectory(${QCustomPlot_DIR})
endif()

set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

if(ENABLE_TESTING)
    enable_testing()
endif()

set(SQLB_HDR
	src/version.h
	src/sql/sqlitetypes.h
	src/sql/Query.h
	src/sql/ObjectIdentifier.h
	src/csvparser.h
	src/sqlite.h
	src/Data.h
	src/IconCache.h
	src/sql/parser/ParserDriver.h
	src/sql/parser/sqlite3_lexer.h
	src/sql/parser/sqlite3_location.h
	src/sql/parser/sqlite3_parser.hpp
)

set(SQLB_MOC_HDR
	src/sqlitedb.h
	src/AboutDialog.h
	src/EditIndexDialog.h
	src/EditDialog.h
	src/EditTableDialog.h
	src/AddRecordDialog.h
	src/ExportDataDialog.h
	src/ExtendedTableWidget.h
	src/FilterTableHeader.h
	src/ImportCsvDialog.h
	src/MainWindow.h
	src/Settings.h
	src/PreferencesDialog.h
	src/SqlExecutionArea.h
	src/VacuumDialog.h
	src/sqlitetablemodel.h
	src/RowLoader.h
	src/RowCache.h
	src/sqltextedit.h
	src/docktextedit.h
	src/DbStructureModel.h
	src/Application.h
	src/CipherDialog.h
	src/ExportSqlDialog.h
	src/SqlUiLexer.h
	src/FileDialog.h
	src/ColumnDisplayFormatDialog.h
	src/FilterLineEdit.h
	src/RemoteDatabase.h
	src/ForeignKeyEditorDelegate.h
	src/PlotDock.h
	src/RemoteDock.h
	src/RemoteModel.h
	src/RemotePushDialog.h
	src/FindReplaceDialog.h
	src/ExtendedScintilla.h
	src/FileExtensionManager.h
	src/CondFormatManager.h
	src/CipherSettings.h
	src/DotenvFormat.h
	src/Palette.h
	src/CondFormat.h
	src/RunSql.h
	src/ProxyDialog.h
	src/SelectItemsPopup.h
	src/TableBrowser.h
)

set(SQLB_SRC
	src/AboutDialog.cpp
	src/EditIndexDialog.cpp
	src/EditDialog.cpp
	src/EditTableDialog.cpp
	src/AddRecordDialog.cpp
	src/ExportDataDialog.cpp
	src/ExtendedTableWidget.cpp
	src/FilterTableHeader.cpp
	src/ImportCsvDialog.cpp
	src/MainWindow.cpp
	src/Settings.cpp
	src/PreferencesDialog.cpp
	src/SqlExecutionArea.cpp
	src/VacuumDialog.cpp
	src/sqlitedb.cpp
	src/sqlitetablemodel.cpp
	src/RowLoader.cpp
	src/sql/sqlitetypes.cpp
	src/sql/Query.cpp
	src/sql/ObjectIdentifier.cpp
	src/sqltextedit.cpp
	src/docktextedit.cpp
	src/csvparser.cpp
	src/DbStructureModel.cpp
	src/main.cpp
	src/Application.cpp
	src/CipherDialog.cpp
	src/ExportSqlDialog.cpp
	src/SqlUiLexer.cpp
	src/FileDialog.cpp
	src/ColumnDisplayFormatDialog.cpp
	src/FilterLineEdit.cpp
	src/RemoteDatabase.cpp
	src/ForeignKeyEditorDelegate.cpp
	src/PlotDock.cpp
	src/RemoteDock.cpp
	src/RemoteModel.cpp
	src/RemotePushDialog.cpp
	src/FindReplaceDialog.cpp
	src/ExtendedScintilla.cpp
	src/FileExtensionManager.cpp
	src/CondFormatManager.cpp
	src/Data.cpp
	src/CipherSettings.cpp
	src/DotenvFormat.cpp
	src/Palette.cpp
	src/CondFormat.cpp
	src/RunSql.cpp
	src/ProxyDialog.cpp
	src/IconCache.cpp
	src/SelectItemsPopup.cpp
	src/TableBrowser.cpp
	src/sql/parser/ParserDriver.cpp
	src/sql/parser/sqlite3_lexer.cpp
	src/sql/parser/sqlite3_parser.cpp
)

set(SQLB_FORMS
	src/AboutDialog.ui
	src/EditIndexDialog.ui
	src/EditDialog.ui
	src/EditTableDialog.ui
	src/AddRecordDialog.ui
	src/ExportDataDialog.ui
	src/ImportCsvDialog.ui
	src/MainWindow.ui
	src/PreferencesDialog.ui
	src/SqlExecutionArea.ui
	src/VacuumDialog.ui
	src/CipherDialog.ui
	src/ExportSqlDialog.ui
	src/ColumnDisplayFormatDialog.ui
	src/PlotDock.ui
	src/RemoteDock.ui
	src/RemotePushDialog.ui
	src/FindReplaceDialog.ui
	src/FileExtensionManager.ui
	src/CondFormatManager.ui
	src/ProxyDialog.ui
	src/SelectItemsPopup.ui
	src/TableBrowser.ui
)

set(SQLB_RESOURCES
	src/icons/icons.qrc
	src/translations/flags/flags.qrc
	src/translations/translations.qrc
	src/certs/CaCerts.qrc
	src/qdarkstyle/style.qrc
)

set(SQLB_MISC
    src/sql/parser/sqlite3_parser.yy
    src/sql/parser/sqlite3_lexer.ll
)

# Translation files
set(SQLB_TSS
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_ar_SA.ts"
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_cs.ts"
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_zh.ts"
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_zh_TW.ts"
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_de.ts"
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_es_ES.ts"
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_fr.ts"
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_ru.ts"
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_pl.ts"
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_pt_BR.ts"
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_en_GB.ts"
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_ko_KR.ts"
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_tr.ts"
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_uk_UA.ts"
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_it.ts"
	"${CMAKE_SOURCE_DIR}/src/translations/sqlb_ja.ts"
)

# Windows image format plugin files
set(WIN_IMG_PLUGINS
	"${QT5_PATH}/plugins/imageformats/qgif.dll"
	"${QT5_PATH}/plugins/imageformats/qicns.dll"
	"${QT5_PATH}/plugins/imageformats/qico.dll"
	"${QT5_PATH}/plugins/imageformats/qjpeg.dll"
	"${QT5_PATH}/plugins/imageformats/qsvg.dll"
	"${QT5_PATH}/plugins/imageformats/qtga.dll"
	"${QT5_PATH}/plugins/imageformats/qtiff.dll"
	"${QT5_PATH}/plugins/imageformats/qwbmp.dll"
	"${QT5_PATH}/plugins/imageformats/qwebp.dll"
)
set(WIN_IMG_PLUGINS_DEBUG
	"${QT5_PATH}/plugins/imageformats/qgifd.dll"
	"${QT5_PATH}/plugins/imageformats/qicnsd.dll"
	"${QT5_PATH}/plugins/imageformats/qicod.dll"
	"${QT5_PATH}/plugins/imageformats/qjpegd.dll"
	"${QT5_PATH}/plugins/imageformats/qsvgd.dll"
	"${QT5_PATH}/plugins/imageformats/qtgad.dll"
	"${QT5_PATH}/plugins/imageformats/qtiffd.dll"
	"${QT5_PATH}/plugins/imageformats/qwbmpd.dll"
	"${QT5_PATH}/plugins/imageformats/qwebpd.dll"
)

# License files
set(LICENSE_FILES
	LICENSE
	LICENSE-PLUGINS
)

qt5_wrap_ui(SQLB_FORM_HDR ${SQLB_FORMS})
if(SQLB_TSS)
	# add translations
	foreach(SQLB_TS ${SQLB_TSS})
		SET_SOURCE_FILES_PROPERTIES("${SQLB_TS}" PROPERTIES OUTPUT_LOCATION "${CMAKE_SOURCE_DIR}/src/translations")
	endforeach(SQLB_TS ${SQLB_TSS})
	qt5_add_translation(SQLB_QMS ${SQLB_TSS})
endif(SQLB_TSS)
qt5_add_resources(SQLB_RESOURCES_RCC ${SQLB_RESOURCES})

#icon and correct libs/subsystem for windows
if(WIN32)
        #enable version check for windows
        add_definitions(-DCHECKNEWVERSION)

	IF( MINGW )
	# resource compilation for MinGW
		ADD_CUSTOM_COMMAND(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/sqlbicon.o"
			COMMAND windres "-I${CMAKE_CURRENT_SOURCE_DIR}" "-i${CMAKE_CURRENT_SOURCE_DIR}/src/winapp.rc" -o "${CMAKE_CURRENT_BINARY_DIR}/sqlbicon.o" VERBATIM)
		set(SQLB_SRC ${SQLB_SRC} "${CMAKE_CURRENT_BINARY_DIR}/sqlbicon.o")
		set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-subsystem,windows")
		set(WIN32_STATIC_LINK -Wl,-Bstatic -lssl -lcrypto -lws2_32)
		set(ADDITIONAL_LIBS lzma)
	ELSE( MINGW )
		set(SQLB_SRC ${SQLB_SRC} "${CMAKE_CURRENT_SOURCE_DIR}/src/winapp.rc")
	ENDIF( MINGW )
else()
	set(LPTHREAD pthread)
endif(WIN32)

#enable version check for MacOS
if(APPLE)
	add_definitions(-DCHECKNEWVERSION)
endif(APPLE)

# SQLCipher option
if(sqlcipher)
	add_definitions(-DENABLE_SQLCIPHER)
	set(LIBSQLITE_NAME sqlcipher)
else(sqlcipher)
	set(LIBSQLITE_NAME sqlite3)
endif(sqlcipher)

# add extra library path for MacOS and FreeBSD
set(EXTRAPATH APPLE OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
if(EXTRAPATH)
	find_library(LIBSQLITE ${LIBSQLITE_NAME} HINTS /usr/local/lib /usr/local/opt/sqlite/lib)
	set(ADDITIONAL_INCLUDE_PATHS /usr/local/include /usr/local/opt/sqlite/include)
else(EXTRAPATH)
	find_library(LIBSQLITE ${LIBSQLITE_NAME})
endif(EXTRAPATH)

if(WIN32 AND MSVC)
	find_path(SQLITE3_INCLUDE_DIR sqlite3.h)
	if(sqlcipher)
		find_file(SQLITE3_DLL sqlcipher.dll)
	else(sqlcipher)
		find_file(SQLITE3_DLL sqlite3.dll)
	endif(sqlcipher)
	include_directories(${SQLITE3_INCLUDE_DIR})
endif()

include_directories(
		"${CMAKE_CURRENT_BINARY_DIR}"
		${JSON_DIR}
		${ADDITIONAL_INCLUDE_PATHS}
		src)
if(QHexEdit_FOUND)
    include_directories(${QHexEdit_INCLUDE_DIR})
else()
    include_directories(${QHexEdit_INCL_DIR})
endif()
if(QCustomPlot_FOUND)
    include_directories(${QCustomPlot_INCLUDE_DIR})
else()
    include_directories(${QCustomPlot_DIR})
endif()
if(QSCINTILLA_FOUND)
    include_directories(${QSCINTILLA_INCLUDE_DIR})
else()
    include_directories(${QSCINTILLA_DIR})
endif()

add_executable(${PROJECT_NAME}
		${SQLB_HDR}
		${SQLB_SRC}
		${SQLB_FORM_HDR}
		${SQLB_MOC}
		${SQLB_RESOURCES_RCC}
		${SQLB_MISC})


# Warnings
if (ALL_WARNINGS AND CMAKE_COMPILER_IS_GNUCC)
    target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wshadow -Wnon-virtual-dtor -Wold-style-cast -Wcast-align -Wunused -Woverloaded-virtual -Wpedantic -Wconversion -Wsign-conversion)
    target_compile_options(${PROJECT_NAME} PRIVATE -Wdouble-promotion -Wformat=2 -Wlogical-op -Wuseless-cast)
    if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 7.0)
        target_compile_options(${PROJECT_NAME} PRIVATE -Wnull-dereference -Wduplicated-cond -Wduplicated-branches)
    endif()
endif()

if(NOT QHexEdit_FOUND)
    add_dependencies(${PROJECT_NAME} qhexedit)
endif()
if(NOT QCustomPlot_FOUND)
    add_dependencies(${PROJECT_NAME} qcustomplot)
endif()
if(NOT QSCINTILLA_FOUND)
    add_dependencies(${PROJECT_NAME} qscintilla2)
endif()

if(NOT QHexEdit_FOUND)
    link_directories("${CMAKE_CURRENT_BINARY_DIR}/${QHexEdit_DIR}")
endif()
if(NOT QCustomPlot_FOUND)
    link_directories("${CMAKE_CURRENT_BINARY_DIR}/${QCustomPlot_DIR}")
endif()
if(NOT QSCINTILLA_FOUND)
    link_directories("${CMAKE_CURRENT_BINARY_DIR}/${QSCINTILLA_DIR}")
endif()

set(QT_LIBS Qt5::Gui Qt5::Test Qt5::PrintSupport Qt5::Widgets Qt5::Network Qt5::Concurrent Qt5::Xml)

target_link_libraries(${PROJECT_NAME}
    ${LPTHREAD}
    ${QT_LIBS}
    ${WIN32_STATIC_LINK}
    ${LIBSQLITE}
    ${ADDITIONAL_LIBS})
if(QHexEdit_FOUND)
    target_link_libraries(${PROJECT_NAME} ${QHexEdit_LIBRARIES})
else()
    target_link_libraries(${PROJECT_NAME} qhexedit)
endif()
if(QCustomPlot_FOUND)
    target_link_libraries(${PROJECT_NAME} ${QCustomPlot_LIBRARIES})
else()
    target_link_libraries(${PROJECT_NAME} qcustomplot)
endif()
if(QSCINTILLA_FOUND)
    target_link_libraries(${PROJECT_NAME} ${QSCINTILLA_LIBRARIES})
else()
    target_link_libraries(${PROJECT_NAME} qscintilla2)
endif()

if(WIN32 AND MSVC)
	set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "DB Browser for SQLite")
	set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE")
	set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_DEFINITIONS_DEBUG "_CONSOLE")
	set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:CONSOLE")
	set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_DEFINITIONS_RELWITHDEBINFO "_CONSOLE")
    if(CMAKE_CL_64)
        set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS,5.02 /ENTRY:mainCRTStartup")
        set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS,5.02")
    else()
        set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS,5.01 /ENTRY:mainCRTStartup")
        set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS,5.01")
    endif()
endif()

if(NOT WIN32)
	install(TARGETS ${PROJECT_NAME}
		RUNTIME DESTINATION bin
		LIBRARY DESTINATION lib)
endif()

if(ENABLE_TESTING)
	add_subdirectory(src/tests)
endif()

if(UNIX)
	install(FILES src/icons/${PROJECT_NAME}.png
		DESTINATION share/icons/hicolor/256x256/apps/)

	install(FILES distri/${PROJECT_NAME}.desktop
		DESTINATION share/applications/)

	install(FILES distri/${PROJECT_NAME}.desktop.appdata.xml
		DESTINATION share/metainfo/)
endif(UNIX)

if(WIN32 AND MSVC)
	install(TARGETS ${PROJECT_NAME}
		RUNTIME DESTINATION "/"
		LIBRARY DESTINATION lib)

	set(QT5_BIN_PATH ${QT5_PATH}/bin)
	# The Qt5 Debug configuration library files have a 'd' postfix
	install(FILES
			${QT5_BIN_PATH}/Qt5Cored.dll
			${QT5_BIN_PATH}/Qt5Guid.dll
			${QT5_BIN_PATH}/Qt5Networkd.dll
			${QT5_BIN_PATH}/Qt5PrintSupportd.dll
			${QT5_BIN_PATH}/Qt5Widgetsd.dll
			${QT5_BIN_PATH}/Qt5Concurrentd.dll
		DESTINATION "/"
		CONFIGURATIONS Debug)
	# The Qt5 Release configuration files don't have a postfix
	install(FILES
			${QT5_BIN_PATH}/Qt5Core.dll
			${QT5_BIN_PATH}/Qt5Gui.dll
			${QT5_BIN_PATH}/Qt5Network.dll
			${QT5_BIN_PATH}/Qt5PrintSupport.dll
			${QT5_BIN_PATH}/Qt5Widgets.dll
			${QT5_BIN_PATH}/Qt5Concurrent.dll
		DESTINATION "/"
		CONFIGURATIONS Release)
	# The files below are common to all configurations
	install(FILES
			${SQLITE3_DLL}
			${OPENSSL_PATH}/libeay32.dll
			${OPENSSL_PATH}/ssleay32.dll
		DESTINATION "/")
	install(FILES
		${QT5_PATH}/plugins/platforms/qwindows.dll
		DESTINATION platforms)

	# The XML dll
	install(FILES
			"${QT5_PATH}/bin/Qt5Xmld.dll"
		DESTINATION "/"
		CONFIGURATIONS Debug)
	install(FILES
			"${QT5_PATH}/bin/Qt5Xml.dll"
		DESTINATION "/"
		CONFIGURATIONS Release)

	# The image format plugins
	install(FILES
			${WIN_IMG_PLUGINS_DEBUG}
		DESTINATION imageformats
		CONFIGURATIONS Debug)
	install(FILES
			${WIN_IMG_PLUGINS}
		DESTINATION imageformats
		CONFIGURATIONS Release)

	# The license files
	install(FILES
			${LICENSE_FILES}
		DESTINATION licenses)

	# The batch file launcher
	install(FILES
			distri/winlaunch.bat
		DESTINATION "/")
endif()
